🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / core / model / src / commonTest / kotlin / org / meshtastic / core / model / MentionTest.kt
Displaying Raw • Download
core/model/src/commonTest/kotlin/org/meshtastic/core/model/MentionTest.kt bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 2.49 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.model
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals
Tff7b72import T7ee787kotlin.test.assertFalse
Tff7b72import T7ee787kotlin.test.assertTrue
Tff7b72class T56d364MentionTest Tb4b4b4{
Tff7b72private Tff7b72val Te6edf3myId Tff7b72= Ta5d6ff"Ta5d6ff!ffccee11Ta5d6ff"
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode matches an exact mention token`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertTrueTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffhey @!ffccee11 you thereTa5d6ff"Tb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode matches a mention at the end of text`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertTrueTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffping @!ffccee11Ta5d6ff"Tb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode does not match when trailing hex extends the id`Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Boundary rule: @!ffccee11a is a different (longer) hex run, not a mention of !ffccee11.
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6fflook at @!ffccee11a hereTa5d6ff"Tb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode does not match a different node`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffhi @!12345678Ta5d6ff"Tb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode matches case-insensitively`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertTrueTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffhi @!FFCCEE11Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff!ffccee11Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffhi @!ffccee11Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff!FFCCEE11Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode does not match plain text without the token`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ffno mentions hereTa5d6ff"Tb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`textMentionsNode empty or unknown local id never matches`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ff@!ffccee11Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Ta5d6ff"Ta5d6ff@!ffccee11Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff!Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3textMentionsNodeTb4b4b4(Tff7b72nullTb4b4b4, Te6edf3myIdTb4b4b4)Tb4b4b4)
Tb4b4b4}
Tf0883e@Test
Tff7b72fun Td2a8ff`MENTION_TOKEN_REGEX captures the hex id and rejects trailing hex`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3assertEqualsTb4b4b4(Ta5d6ff"Ta5d6ff!ffccee11Ta5d6ff"Tb4b4b4, Te6edf3MENTION_TOKEN_REGEXTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"Ta5d6ffyo @!ffccee11!Ta5d6ff"Tb4b4b4)Tff7b72?.Te6edf3groupValuesTff7b72?.Te6edf3getTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Tff7b72nullTb4b4b4, Te6edf3MENTION_TOKEN_REGEXTb4b4b4.Te6edf3findTb4b4b4(Ta5d6ff"Ta5d6ff@!ffccee11aTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.07s